//  1.await之后的代码会等待 resolve 或者是reject执行之后再执行
// async function fn() {
//   console.log(1111);
//   await new Promise((resolve) => {
//     resolve(333);
//   });
//   console.log(444);
// }
// fn();
// console.log(222);

// 1111 222 444

// function fn1() {
//   return new Promise((resolve) => {
//     setTimeout(() => {
//       resolve(111);
//     }, 2000);
//   });
// }

// (async function () {
//   let res = await fn1();
//   console.log(res);
//   console.log(2222);
// })();

//2.  函数前面不加await是同步代码,加了await变成异步代码,await模拟then的执行，加了await的函数是微任务
setTimeout(() => {
  console.log(5555);
});
async function fn() {
  console.log(1111);
  await new Promise((resolve) => {
    resolve(333);
  });
  console.log(444);
}
fn();
console.log(222);
//1111 222 444 5555

//3.async 函数的返还值和 then的返还值一致；

async function fn() {
  await Promise.resolve(111);
  // return 111;
  // return Promise.resolve("success");
  throw new Error("错了");
}

let res = fn();
console.log(res);

// 4.await 只能出现在async函数里，且不能出现在嵌套函数里面；

// 5.await 只能等待 一个async函数里的内容(多个await等待一个async函数才能实现依次执行的效果)
